//===-- CVLeafTypes.def - All CodeView leaf types ---------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// See LEAF_ENUM_e in cvinfo.h. This should match the constants there.
//
//===----------------------------------------------------------------------===//

#ifndef SYMBOL_TYPE
#define SYMBOL_TYPE(ename, value)
#endif

// 16 bit symbol types. Not very useful, provided only for reference.
SYMBOL_TYPE(S_COMPILE       , 0x0001)
SYMBOL_TYPE(S_REGISTER_16t  , 0x0002)
SYMBOL_TYPE(S_CONSTANT_16t  , 0x0003)
SYMBOL_TYPE(S_UDT_16t       , 0x0004)
SYMBOL_TYPE(S_SSEARCH       , 0x0005)
SYMBOL_TYPE(S_END           , 0x0006)
SYMBOL_TYPE(S_SKIP          , 0x0007)
SYMBOL_TYPE(S_CVRESERVE     , 0x0008)
SYMBOL_TYPE(S_OBJNAME_ST    , 0x0009)
SYMBOL_TYPE(S_ENDARG        , 0x000a)
SYMBOL_TYPE(S_COBOLUDT_16t  , 0x000b)
SYMBOL_TYPE(S_MANYREG_16t   , 0x000c)
SYMBOL_TYPE(S_RETURN        , 0x000d)
SYMBOL_TYPE(S_ENTRYTHIS     , 0x000e)
SYMBOL_TYPE(S_BPREL16       , 0x0100)
SYMBOL_TYPE(S_LDATA16       , 0x0101)
SYMBOL_TYPE(S_GDATA16       , 0x0102)
SYMBOL_TYPE(S_PUB16         , 0x0103)
SYMBOL_TYPE(S_LPROC16       , 0x0104)
SYMBOL_TYPE(S_GPROC16       , 0x0105)
SYMBOL_TYPE(S_THUNK16       , 0x0106)
SYMBOL_TYPE(S_BLOCK16       , 0x0107)
SYMBOL_TYPE(S_WITH16        , 0x0108)
SYMBOL_TYPE(S_LABEL16       , 0x0109)
SYMBOL_TYPE(S_CEXMODEL16    , 0x010a)
SYMBOL_TYPE(S_VFTABLE16     , 0x010b)
SYMBOL_TYPE(S_REGREL16      , 0x010c)
SYMBOL_TYPE(S_BPREL32_16t   , 0x0200)
SYMBOL_TYPE(S_LDATA32_16t   , 0x0201)
SYMBOL_TYPE(S_GDATA32_16t   , 0x0202)
SYMBOL_TYPE(S_PUB32_16t     , 0x0203)
SYMBOL_TYPE(S_LPROC32_16t   , 0x0204)
SYMBOL_TYPE(S_GPROC32_16t   , 0x0205)
SYMBOL_TYPE(S_THUNK32_ST    , 0x0206)
SYMBOL_TYPE(S_BLOCK32_ST    , 0x0207)
SYMBOL_TYPE(S_WITH32_ST     , 0x0208)
SYMBOL_TYPE(S_LABEL32_ST    , 0x0209)
SYMBOL_TYPE(S_CEXMODEL32    , 0x020a)
SYMBOL_TYPE(S_VFTABLE32_16t , 0x020b)
SYMBOL_TYPE(S_REGREL32_16t  , 0x020c)
SYMBOL_TYPE(S_LTHREAD32_16t , 0x020d)
SYMBOL_TYPE(S_GTHREAD32_16t , 0x020e)
SYMBOL_TYPE(S_SLINK32       , 0x020f)
SYMBOL_TYPE(S_LPROCMIPS_16t , 0x0300)
SYMBOL_TYPE(S_GPROCMIPS_16t , 0x0301)
SYMBOL_TYPE(S_PROCREF_ST    , 0x0400)
SYMBOL_TYPE(S_DATAREF_ST    , 0x0401)
SYMBOL_TYPE(S_ALIGN         , 0x0402)
SYMBOL_TYPE(S_LPROCREF_ST   , 0x0403)
SYMBOL_TYPE(S_OEM           , 0x0404)

// All post 16 bit symbol types have the 0x1000 bit set.
SYMBOL_TYPE(S_TI16_MAX      , 0x1000)

// Mostly unused "start" symbol types.
SYMBOL_TYPE(S_REGISTER_ST   , 0x1001)
SYMBOL_TYPE(S_CONSTANT_ST   , 0x1002)
SYMBOL_TYPE(S_UDT_ST        , 0x1003)
SYMBOL_TYPE(S_COBOLUDT_ST   , 0x1004)
SYMBOL_TYPE(S_MANYREG_ST    , 0x1005)
SYMBOL_TYPE(S_BPREL32_ST    , 0x1006)
SYMBOL_TYPE(S_LDATA32_ST    , 0x1007)
SYMBOL_TYPE(S_GDATA32_ST    , 0x1008)
SYMBOL_TYPE(S_PUB32_ST      , 0x1009)
SYMBOL_TYPE(S_LPROC32_ST    , 0x100a)
SYMBOL_TYPE(S_GPROC32_ST    , 0x100b)
SYMBOL_TYPE(S_VFTABLE32     , 0x100c)
SYMBOL_TYPE(S_REGREL32_ST   , 0x100d)
SYMBOL_TYPE(S_LTHREAD32_ST  , 0x100e)
SYMBOL_TYPE(S_GTHREAD32_ST  , 0x100f)
SYMBOL_TYPE(S_LPROCMIPS_ST  , 0x1010)
SYMBOL_TYPE(S_GPROCMIPS_ST  , 0x1011)

// Information about the frame layout of a procedure.
SYMBOL_TYPE(S_FRAMEPROC     , 0x1012)

SYMBOL_TYPE(S_COMPILE2_ST   , 0x1013)
SYMBOL_TYPE(S_MANYREG2_ST   , 0x1014)
SYMBOL_TYPE(S_LPROCIA64_ST  , 0x1015)
SYMBOL_TYPE(S_GPROCIA64_ST  , 0x1016)
SYMBOL_TYPE(S_LOCALSLOT_ST  , 0x1017)
SYMBOL_TYPE(S_PARAMSLOT_ST  , 0x1018)
SYMBOL_TYPE(S_ANNOTATION    , 0x1019)
SYMBOL_TYPE(S_GMANPROC_ST   , 0x101a)
SYMBOL_TYPE(S_LMANPROC_ST   , 0x101b)
SYMBOL_TYPE(S_RESERVED1     , 0x101c)
SYMBOL_TYPE(S_RESERVED2     , 0x101d)
SYMBOL_TYPE(S_RESERVED3     , 0x101e)
SYMBOL_TYPE(S_RESERVED4     , 0x101f)
SYMBOL_TYPE(S_LMANDATA_ST   , 0x1020)
SYMBOL_TYPE(S_GMANDATA_ST   , 0x1021)
SYMBOL_TYPE(S_MANFRAMEREL_ST, 0x1022)
SYMBOL_TYPE(S_MANREGISTER_ST, 0x1023)
SYMBOL_TYPE(S_MANSLOT_ST    , 0x1024)
SYMBOL_TYPE(S_MANMANYREG_ST , 0x1025)
SYMBOL_TYPE(S_MANREGREL_ST  , 0x1026)
SYMBOL_TYPE(S_MANMANYREG2_ST, 0x1027)
SYMBOL_TYPE(S_MANTYPREF     , 0x1028)
SYMBOL_TYPE(S_UNAMESPACE_ST , 0x1029)

// End of S_*_ST symbols, which do not appear to be generated by modern
// compilers.
SYMBOL_TYPE(S_ST_MAX        , 0x1100)

SYMBOL_TYPE(S_OBJNAME       , 0x1101)
SYMBOL_TYPE(S_THUNK32       , 0x1102)
SYMBOL_TYPE(S_BLOCK32       , 0x1103)
SYMBOL_TYPE(S_WITH32        , 0x1104)
SYMBOL_TYPE(S_LABEL32       , 0x1105)
SYMBOL_TYPE(S_REGISTER      , 0x1106)
SYMBOL_TYPE(S_CONSTANT      , 0x1107)
SYMBOL_TYPE(S_UDT           , 0x1108)
SYMBOL_TYPE(S_COBOLUDT      , 0x1109)
SYMBOL_TYPE(S_MANYREG       , 0x110a)
SYMBOL_TYPE(S_BPREL32       , 0x110b)
SYMBOL_TYPE(S_LDATA32       , 0x110c)
SYMBOL_TYPE(S_GDATA32       , 0x110d)
SYMBOL_TYPE(S_PUB32         , 0x110e)
SYMBOL_TYPE(S_LPROC32       , 0x110f)
SYMBOL_TYPE(S_GPROC32       , 0x1110)
SYMBOL_TYPE(S_REGREL32      , 0x1111)
SYMBOL_TYPE(S_LTHREAD32     , 0x1112)
SYMBOL_TYPE(S_GTHREAD32     , 0x1113)
SYMBOL_TYPE(S_LPROCMIPS     , 0x1114)
SYMBOL_TYPE(S_GPROCMIPS     , 0x1115)
SYMBOL_TYPE(S_COMPILE2      , 0x1116)
SYMBOL_TYPE(S_MANYREG2      , 0x1117)
SYMBOL_TYPE(S_LPROCIA64     , 0x1118)
SYMBOL_TYPE(S_GPROCIA64     , 0x1119)
SYMBOL_TYPE(S_LOCALSLOT     , 0x111a)
SYMBOL_TYPE(S_PARAMSLOT     , 0x111b)

// Managed code symbols.
SYMBOL_TYPE(S_LMANDATA      , 0x111c)
SYMBOL_TYPE(S_GMANDATA      , 0x111d)
SYMBOL_TYPE(S_MANFRAMEREL   , 0x111e)
SYMBOL_TYPE(S_MANREGISTER   , 0x111f)
SYMBOL_TYPE(S_MANSLOT       , 0x1120)
SYMBOL_TYPE(S_MANMANYREG    , 0x1121)
SYMBOL_TYPE(S_MANREGREL     , 0x1122)
SYMBOL_TYPE(S_MANMANYREG2   , 0x1123)
SYMBOL_TYPE(S_UNAMESPACE    , 0x1124)
SYMBOL_TYPE(S_PROCREF       , 0x1125)
SYMBOL_TYPE(S_DATAREF       , 0x1126)
SYMBOL_TYPE(S_LPROCREF      , 0x1127)
SYMBOL_TYPE(S_ANNOTATIONREF , 0x1128)
SYMBOL_TYPE(S_TOKENREF      , 0x1129)
SYMBOL_TYPE(S_GMANPROC      , 0x112a)
SYMBOL_TYPE(S_LMANPROC      , 0x112b)
SYMBOL_TYPE(S_TRAMPOLINE    , 0x112c)
SYMBOL_TYPE(S_MANCONSTANT   , 0x112d)
SYMBOL_TYPE(S_ATTR_FRAMEREL , 0x112e)
SYMBOL_TYPE(S_ATTR_REGISTER , 0x112f)
SYMBOL_TYPE(S_ATTR_REGREL   , 0x1130)
SYMBOL_TYPE(S_ATTR_MANYREG  , 0x1131)


SYMBOL_TYPE(S_SEPCODE       , 0x1132)
SYMBOL_TYPE(S_LOCAL_2005    , 0x1133)
SYMBOL_TYPE(S_DEFRANGE_2005 , 0x1134)
SYMBOL_TYPE(S_DEFRANGE2_2005, 0x1135)
SYMBOL_TYPE(S_SECTION       , 0x1136)
SYMBOL_TYPE(S_COFFGROUP     , 0x1137)
SYMBOL_TYPE(S_EXPORT        , 0x1138)
SYMBOL_TYPE(S_CALLSITEINFO  , 0x1139)
SYMBOL_TYPE(S_FRAMECOOKIE   , 0x113a)
SYMBOL_TYPE(S_DISCARDED     , 0x113b)
SYMBOL_TYPE(S_COMPILE3      , 0x113c)
SYMBOL_TYPE(S_ENVBLOCK      , 0x113d)
SYMBOL_TYPE(S_LOCAL         , 0x113e)
SYMBOL_TYPE(S_DEFRANGE      , 0x113f)
SYMBOL_TYPE(S_DEFRANGE_SUBFIELD, 0x1140)
SYMBOL_TYPE(S_DEFRANGE_REGISTER, 0x1141)
SYMBOL_TYPE(S_DEFRANGE_FRAMEPOINTER_REL, 0x1142)
SYMBOL_TYPE(S_DEFRANGE_SUBFIELD_REGISTER, 0x1143)
SYMBOL_TYPE(S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE, 0x1144)
SYMBOL_TYPE(S_DEFRANGE_REGISTER_REL, 0x1145)

// Current symbol types for most procedures as of this writing.
SYMBOL_TYPE(S_LPROC32_ID     , 0x1146)
SYMBOL_TYPE(S_GPROC32_ID     , 0x1147)
SYMBOL_TYPE(S_LPROCMIPS_ID   , 0x1148)
SYMBOL_TYPE(S_GPROCMIPS_ID   , 0x1149)
SYMBOL_TYPE(S_LPROCIA64_ID   , 0x114a)
SYMBOL_TYPE(S_GPROCIA64_ID   , 0x114b)

SYMBOL_TYPE(S_BUILDINFO      , 0x114c)

// Inlined call site delimiters.
SYMBOL_TYPE(S_INLINESITE     , 0x114d)
SYMBOL_TYPE(S_INLINESITE_END , 0x114e)

// Procedure info end delimiter.
SYMBOL_TYPE(S_PROC_ID_END    , 0x114f)

SYMBOL_TYPE(S_DEFRANGE_HLSL  , 0x1150)
SYMBOL_TYPE(S_GDATA_HLSL     , 0x1151)
SYMBOL_TYPE(S_LDATA_HLSL     , 0x1152)
SYMBOL_TYPE(S_FILESTATIC     , 0x1153)
SYMBOL_TYPE(S_LOCAL_DPC_GROUPSHARED, 0x1154)
SYMBOL_TYPE(S_LPROC32_DPC    , 0x1155)
SYMBOL_TYPE(S_LPROC32_DPC_ID , 0x1156)
SYMBOL_TYPE(S_DEFRANGE_DPC_PTR_TAG, 0x1157)
SYMBOL_TYPE(S_DPC_SYM_TAG_MAP, 0x1158)
SYMBOL_TYPE(S_ARMSWITCHTABLE , 0x1159)
SYMBOL_TYPE(S_CALLEES        , 0x115a)
SYMBOL_TYPE(S_CALLERS        , 0x115b)
SYMBOL_TYPE(S_POGODATA       , 0x115c)
SYMBOL_TYPE(S_INLINESITE2    , 0x115d)
SYMBOL_TYPE(S_HEAPALLOCSITE  , 0x115e)
SYMBOL_TYPE(S_MOD_TYPEREF    , 0x115f)
SYMBOL_TYPE(S_REF_MINIPDB    , 0x1160)
SYMBOL_TYPE(S_PDBMAP         , 0x1161)
SYMBOL_TYPE(S_GDATA_HLSL32   , 0x1162)
SYMBOL_TYPE(S_LDATA_HLSL32   , 0x1163)
SYMBOL_TYPE(S_GDATA_HLSL32_EX, 0x1164)
SYMBOL_TYPE(S_LDATA_HLSL32_EX, 0x1165)

#undef SYMBOL_TYPE
